/*****************************************************************************
 *                     Projet de HCR : Annuaire distribué                    *
 *                      Guillaume MONTAVON (Master 2 RIM)                    *
 *                                                                           *
 *     Thread qui s'occupe de répondre aux demandes broadcast des clients    *
 *                 afin qu'ils connaissent l'adresse IP du serveur           *
 *****************************************************************************/

import java.io.*;
import java.net.*;

public class RepBroadcastThread extends Thread {
	
	private int port;
	
	public RepBroadcastThread(int port) {
		this.port = port;
	}
	
	@Override
	public void run() {
		
		try {
			byte[] msg;
			msg = new byte[1500];
			
			DatagramSocket s = null;
			DatagramPacket p = null;
			
			while(true) {
			
				s = new DatagramSocket(port);
				p = new DatagramPacket(msg, msg.length);// l'objet ou le paquet est stocke
				s.receive (p);// blocage jusqu'a reception d'un paquet
				
				String adresseClient = p.getAddress().getHostAddress();
				
				s.close ();// ferme la socket, libère le port
				
				String messageRecu = new String (p.getData (), 0, p.getLength ());
				
				System.out.println ("Serveur reçoit du client (" + adresseClient + ") : " + messageRecu);
				
				
				String m = "serveurgmontavon";
				//si le client n'est pas le mien
				if(!messageRecu.startsWith("clientgmontavon"))
					m = "vous n'etes pas mon client";
				
				msg = m.getBytes ();
				
				s = new DatagramSocket();  // le port est choisi au hasard par le SE
				p = new DatagramPacket(msg, m.length (), InetAddress.getByName (adresseClient), port);
				System.out.println ("Serveur envoie au client (" + adresseClient + ") : " + m);
				s.send (p);
				s.close(); // ferme la socket, libère le port
				
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	
	}
}
